#include "Administrador.h"

#include <sstream>

#include <ColaMensaje.h>
#include <ConfigurationFile.h>
#include <Logger.h>
#include <MsgCaja.h>

Administrador::Administrador()
{

}

Administrador::~Administrador()
{

}


void Administrador::consultarCaja()
{
	Logger* log = Logger::getInstance();
	
	// Armo un pedido de consulta
	TPedidoCaja pedidoConsulta;
	pedidoConsulta.mtype = TipoPedidoCaja::TIPO_CONSULTA;
	pedidoConsulta.sourceId = getpid();
	
	// Creo/obtengo la cola donde estan las solicitudes de caja
	std::string keyCaja = ConfigurationFile::getProperty(Properties::KEY_CAJA);
	ColaMensaje<TPedidoCaja> colaPedidosDeCaja(keyCaja, CreationMode::CREAR_SI_NO_EXISTE);
	
	// Envio la solicitud
	colaPedidosDeCaja.escribir(pedidoConsulta);
	log->debug("ADMINISTRADOR >> Consulta enviada. Esperando respuesta");
	
	// Espero respuesta
	colaPedidosDeCaja.leer(pedidoConsulta.sourceId, &pedidoConsulta);
	
	if(pedidoConsulta.returnCode == ReturnCode::OK)
	{
		std::stringstream msg;
		msg << "ADMINISTRADOR >> El saldo de la caja es de " << pedidoConsulta.value;
		log->info(msg.str());
	}
	else
	{
		log->error("ADMINISTRADOR >> Ocurrio un error al recibir la respuesta de la caja");
	}
}